home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Controls / Visual Basic Controls.iso / vbcontrol / intmail2 / rvserver.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-07-26  |  2.6 KB  |  107 lines

  1. {
  2. This is a server program, which listens on the port 1080,
  3. gets the string from the client, reverses it, and returns
  4. back.  Corresponding client application is RvClient.drp
  5. }
  6. unit RvServerMain;
  7.  
  8. interface
  9.  
  10. uses
  11.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  12.   Mssocket, StdCtrls;
  13.  
  14. type
  15.   TServerForm = class(TForm)
  16.     LogMemo: TMemo;
  17.     StartButton: TButton;
  18.     StopButton: TButton;
  19.     msListenerSocket1: TmsListenerSocket;
  20.     procedure StartButtonClick(Sender: TObject);
  21.     procedure msListenerSocket1Start(Sender: TObject);
  22.     procedure msListenerSocket1Stop(Sender: TObject);
  23.     procedure StopButtonClick(Sender: TObject);
  24.     procedure msListenerSocket1ServerThreadStart(Sender: TObject;
  25.       ServerThread: TmsServerThread);
  26.     procedure msListenerSocket1ServerThreadTerminate(Sender: TObject;
  27.       ServerThread: TmsServerThread);
  28.   private
  29.     { Private declarations }
  30.   public
  31.     { Public declarations }
  32.   end;
  33.  
  34.   TReverseServer = class(TmsServerThread)
  35.   private
  36.     FString: string;
  37.     procedure UpdateLog;
  38.   protected
  39.     procedure Execute; override;
  40.   end;
  41.  
  42. var
  43.   ServerForm: TServerForm;
  44.  
  45. implementation
  46.  
  47. {$R *.DFM}
  48. procedure TReverseServer.UpdateLog;
  49. begin
  50.   ServerForm.LogMemo.Lines.Add(FString);
  51. end;
  52.  
  53. procedure TReverseServer.Execute;
  54. var
  55.   s,s1: string;
  56.   i: Integer;
  57. begin
  58.   s:=ServerSocket.RecvLine;
  59.   FString:='Line received: '+s;
  60.   Synchronize(UpdateLog);
  61.   s1:='';
  62.   for i:=Length(s) DownTo 1 do
  63.     s1:=s1+s[i];
  64.   ServerSocket.SendLine(s1);
  65.   FString:='Line sent: '+s1;
  66.   ServerSocket.Disconnect;
  67. end;
  68.  
  69. procedure TServerForm.StartButtonClick(Sender: TObject);
  70. begin
  71.   msListenerSocket1.ServerThreadClass:=TReverseServer;
  72.   msListenerSocket1.Start;
  73. end;
  74.  
  75. procedure TServerForm.msListenerSocket1Start(Sender: TObject);
  76. begin
  77.   LogMemo.Lines.Add('Server started');
  78.   StartButton.Enabled:=false;
  79.   StopButton.Enabled:=true;
  80. end;
  81.  
  82. procedure TServerForm.msListenerSocket1Stop(Sender: TObject);
  83. begin
  84.   LogMemo.Lines.Add('Server stopped');
  85.   StartButton.Enabled:=true;
  86.   StopButton.Enabled:=false;
  87. end;
  88.  
  89. procedure TServerForm.StopButtonClick(Sender: TObject);
  90. begin
  91.   msListenerSocket1.Stop;
  92. end;
  93.  
  94. procedure TServerForm.msListenerSocket1ServerThreadStart(Sender: TObject;
  95.   ServerThread: TmsServerThread);
  96. begin
  97.   LogMemo.Lines.Add('Starting the server thread for '+ServerThread.Peer);
  98. end;
  99.  
  100. procedure TServerForm.msListenerSocket1ServerThreadTerminate(
  101.   Sender: TObject; ServerThread: TmsServerThread);
  102. begin
  103.   LogMemo.Lines.Add('Ending the server thread for '+ServerThread.Peer);
  104. end;
  105.  
  106. end.
  107.